home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
-
- //
- // String class with overloaded cat function
- //
- class String
- {
- public:
- String() { ... }
- String(const char *s) { ... }
- String(const String &s) { ... }
- ~String() { delete str; }
- size_t length() { return len; }
- const char *text() { return str; }
- void cat(char c);
- void cat(const char *s);
- void cat(const String &s);
- char &sub(size_t i) { ... }
- private:
- size_t len;
- char *str;
- };
-
- //
- // append a character to a String
- //
- void String::cat(char c)
- {
- char *p = strcpy(new char[len + 2], str);
- p[len++] = c;
- p[len] = '\0';
- delete str;
- str = p;
- }
-
- //
- // append a nul-terminated string to a String
- //
- void String::cat(const char *s)
- {
- size_t n = len + strlen(s) + 1;
- char *p = strcpy(new char[n], str);
- strcat(p, s);
- delete str;
- str = p;
- }
-
- //
- // append a String to a String
- //
- void String::cat(const String &s)
- {
- size_t n = len + s.len + 1;
- char *p = strcpy(new char[n], str);
- strcat(p, s.str);
- delete str;
- str = p;
- }
-
- int main()
- {
- size_t i;
- String s1("hello"); // s1 = "hello"
- String s2(s1); // s2 = "hello"
- s2.cat(','); // s2 = "hello,"
- s2.cat(' '); // s2 = "hello, "
- s2.cat(s2); // s2 = "hello, hello, "
- s2.cat("world"); // s2 = "hello, hello, world"
- printf("s1 = %s\n", s1.text());
- printf("s2 = %s\n", s2.text());
- return 0;
- }
-
-